package servicos;

import java.io.File;
import java.math.BigDecimal;

import resposta.CabecalhoResposta;
import resposta.Resposta;
import sessao.Sessao;
import util.Servico;
import util.Util;
import beans.Cliente;
import beans.Cookie;
import dao.ClienteDao;
import factory.DaoFactory;

public class CadastrarCliente implements Servico {
	private ClienteDao clienteDao = DaoFactory.getClienteDao();
	private Sessao sessao =  Sessao.getSessao();
	public CadastrarCliente(){
		
	}
	
	@Override
	public void executa(Resposta resposta) {
		String cook = resposta.getRequisicao().getCabecalho().getValor("Cookie");	
		if(cook.length() > 1){
			String parts[] = cook.split("=");
			Cookie cookie = new Cookie(parts[0].trim(),parts[1].trim());
			if(sessao.validarCookie(cookie)){
				if(resposta.getRequisicao().getMetodo().getParametros().isTemParametros()){
					
					Cliente cliente = new Cliente(1, resposta.getRequisicao().getMetodo().getParametros().getParametro("nome"),
							resposta.getRequisicao().getMetodo().getParametros().getParametro("endereco"),
							resposta.getRequisicao().getMetodo().getParametros().getParametro("cidade"),
							resposta.getRequisicao().getMetodo().getParametros().getParametro("estado"), 
							resposta.getRequisicao().getMetodo().getParametros().getParametro("cep"), 
							resposta.getRequisicao().getMetodo().getParametros().getParametro("email"));
					String coordenadas[] = Util.getLocation(cliente);
					
					
					cliente.setLatitude(new BigDecimal(coordenadas[0]));
					cliente.setLongitude(new BigDecimal(coordenadas[1]));
					
					String root = "trabalho3bi";
					resposta.setRoot(root);
					if(clienteDao.cadastrarCliente(cliente) == 1){						
						String recurso = "sucessoCadastro.html";
						resposta.setRecurso(recurso);
						File file = new File(root+"\\"+recurso);
						CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
						resposta.setCabecalhoResposta(cabecalhoResposta);
						resposta.despacharCabecalho();
						resposta.despacharRecurso();
					}else{
						String recurso = "erroCadastro.html";
						resposta.setRecurso(recurso);
						File file = new File(root+"\\"+recurso);
						CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
						resposta.setCabecalhoResposta(cabecalhoResposta);
						resposta.despacharCabecalho();
						resposta.despacharRecurso();
					}
				}else{
					String root = "trabalho3bi";
					resposta.setRoot(root);
					String recurso = "erroCadastro.html";
					resposta.setRecurso(recurso);
					File file = new File(root+"\\"+recurso);
					CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
					resposta.setCabecalhoResposta(cabecalhoResposta);
					resposta.despacharCabecalho();
					resposta.despacharRecurso();
				}
			}else{
				negarAcesso(resposta);
			}
		}else{
			negarAcesso(resposta);			
		}
		
	}
	private void negarAcesso(Resposta resposta){
		System.err.println("entrou aqui");
		String root = "titanic\\";
		resposta.setRoot(root);
		resposta.setRecurso("sessaoExpirada.html");
		File file = new File(root+"\\sessaoExpirada.html");
		CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");
		resposta.setCabecalhoResposta(cabecalhoResposta);
		resposta.despacharCabecalho();
		resposta.despacharRecurso();
	}
}
